#ifndef __GTIM_H
#define __GTIM_H

#include "stm32f1xx.h"

/*********************************以下是通用定时器PWM输出相关宏定义*************************************/
/* TIMX PWM输出定义 
 * 这里输出的PWM控制LED0(RED)的亮度
 * 默认是针对TIM2~TIM5
 * 注意: 通过修改这几个宏定义,可以支持TIM1~TIM8任意一个定时器,任意一个IO口输出PWM
 */
#define GTIM_TIMX_PWM_CHY_GPIO_PORT         GPIOB
#define GTIM_TIMX_PWM_CHY_GPIO_PIN          GPIO_PIN_0
#define GTIM_TIMX_PWM_CHY_GPIO_CLK_ENABLE() do{ __HAL_RCC_GPIOB_CLK_ENABLE(); }while(0)  /* PB口时钟使能 */

#define GTIM_TIMX_PWM                       TIM3 
#define GTIM_TIMX_PWM_CHY                   TIM_CHANNEL_3                                /* 通道Y,  1<= Y <=4 */
#define GTIM_TIMX_PWM_CHY_CCRX              GTIM_TIMX_PWM->CCR3                          /* 通道Y的输出比较寄存器 */
#define GTIM_TIMX_PWM_CHY_CLK_ENABLE()      do{ __HAL_RCC_TIM3_CLK_ENABLE(); }while(0)   /* TIM3 时钟使能 */

#define GTIM_TIMX_PWM2_CHY_GPIO_PORT        GPIOB
#define GTIM_TIMX_PWM2_CHY_GPIO_PIN         GPIO_PIN_11
#define GTIM_TIMX_PWM2_CHY_GPIO_CLK_ENABLE()do{ __HAL_RCC_GPIOB_CLK_ENABLE(); }while(0)  /* PB口时钟使能 */

#define GTIM_TIMX_PWM2                      TIM2 
#define GTIM_TIMX_PWM2_CHY                  TIM_CHANNEL_4                                /* 通道Y,  1<= Y <=4 */
#define GTIM_TIMX_PWM2_CHY_CCRX             GTIM_TIMX_PWM2->CCR4                         /* 通道Y的输出比较寄存器 */
#define GTIM_TIMX_PWM2_CHY_CLK_ENABLE()     do{ __HAL_RCC_TIM2_CLK_ENABLE(); }while(0)   /* TIM2 时钟使能 */

extern TIM_HandleTypeDef g_timx_pwm_chy_handle;     /* 定时器x句柄 */

void gtim_timx_pwm_chy_init(uint16_t arr, uint16_t psc);    /* 通用定时器 PWM初始化函数 */

#endif
